/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002-2006
* Sleepycat Software. All rights reserved.
*
* $Id: JEFileFilter.java,v 1.1 2006/05/06 08:59:56 ckaestne Exp $
*/
package com.sleepycat.je.log;
import java.io.File;
import java.io.FilenameFilter;
import java.util.StringTokenizer;
/**
* JEFileFilters are used for listing je files.
*/
class JEFileFilter implements FilenameFilter {
String[] suffix;
JEFileFilter(String[] suffix) {
this.suffix = suffix;
}
private boolean matches(String fileSuffix) {
for (int i = 0; i < suffix.length; i++) {
if (fileSuffix.equalsIgnoreCase(suffix[i])) {
return true;
}
}
return false;
}
/**
* A JE file has to be of the format nnnnnnnn.suffix.
*/
public boolean accept(File dir, String name) {
boolean ok = false;
StringTokenizer tokenizer = new StringTokenizer(name, ".");
/* There should be two parts. */
int nTokens = tokenizer.countTokens();
if (nTokens == 2 || nTokens == 3) {
boolean hasVersion = (nTokens == 3);
String fileNumber = tokenizer.nextToken();
String fileSuffix = "." + tokenizer.nextToken();
String fileVersion = (hasVersion ? tokenizer.nextToken() : null);
/* Check the length and the suffix. */
if ((fileNumber.length() == 8) &&
matches(fileSuffix)) {
//(fileSuffix.equalsIgnoreCase(suffix))) {
/* The first part should be a number. */
try {
Integer.parseInt(fileNumber, 16);
ok = true;
} catch (NumberFormatException e) {
ok = false;
}
if (hasVersion) {
try {
Integer.parseInt(fileVersion);
ok = true;
} catch (NumberFormatException e) {
ok = false;
}
}
}
}
return ok;
}
}